package Z.dailyExercise._1215;

import java.util.ArrayList;

public class _9_回文数 {

    /**
     * 自解：将int各个位搞出来 依次进行比对
     * @param x
     * @return
     */
    public boolean isPalindrome(int x) {

        if (x<0){
            return false;
        }
        if (x /10 ==0){
            return true;
        }


        ArrayList<Integer> list = new ArrayList<>();

        while (x!=0){

            int temp = x%10;
            x = x/10;

            list.add(temp);
        }

        int j= list.size()-1;
        for (int i=0;i<list.size()/2;i++){
            if (list.get(i) == list.get(j)){
                j--;
            }else {
                return false;
            }
        }

        return true;

    }


    /**
     * 题解：将x的一半进行反转 依次获得最后的一位数字 并且 之前的数*10+本次弹出的数
     * 特殊：负数不是 所有各位为0的不是
     * 终止条件：当原始数字小于或等于反转后的数字时，就意味着我们已经处理了一半位数的数字了
     *
     * 判断：相等 或者就是如果为奇数 则最终的x=revertNUm/10
     */
    public boolean isPalindrome1(int x) {
        if (x<0 || (x%10==0 && x != 0)){
            return false;
        }
        if (x /10 ==0){
            return true;
        }

        int revertnum =0;
        while (x > revertnum){

            revertnum = revertnum*10+x%10;
            x /=10;
        }

        return revertnum == x || revertnum/10 == x;
    }
}
